package initialize

import (
	"go.uber.org/zap"
	"go.uber.org/zap/zapcore"
	"gopkg.in/natefinch/lumberjack.v2"
	"os"
)

// InitLogger 初始化日志系统
func InitLogger() {
	development_logger, err := zap.NewDevelopment()
	if err != nil {
		// @TODO 所有异常都需要有处置机制
		return
	}
	zap.ReplaceGlobals(development_logger)

	lumberJackLogger := &lumberjack.Logger{
		Filename:   "logs/virtual-resource-schedule-service.log", // 日志文件的位置
		MaxSize:    100,                                          // 日志文件的最大大小（MB）
		MaxBackups: 3,                                            // 保留旧文件的最大个数
		MaxAge:     7,                                            // 保留旧文件的最大天数
		Compress:   true,                                         // 是否压缩/归档旧文件
	}

	encoderConfig := zap.NewDevelopmentEncoderConfig()
	encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
	consoleEncoder := zapcore.NewConsoleEncoder(encoderConfig)

	// 配置zap日志
	core := zapcore.NewTee(
		zapcore.NewCore(
			consoleEncoder,
			zapcore.AddSync(os.Stdout),
			zapcore.DebugLevel,
		),
		zapcore.NewCore(
			consoleEncoder,
			zapcore.AddSync(lumberJackLogger),
			zapcore.InfoLevel,
		),
	)

	logger := zap.New(core)
	zap.ReplaceGlobals(logger)

}
